
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.bsc.view.mbean;

import com.brain.bsc.dto.BalancedScoreCardDto;
import com.brain.bsc.dto.DesarrolloBscDto;
import com.brain.bsc.dto.PrincipalDto;
import com.brain.bsc.dto.ResponsableBscDto;
import com.brain.bsc.manager.BalancedScoreCardManager;
import com.brain.bsc.manager.DesarrolloBscManager;
import com.brain.bsc.manager.PrincipalManager;
import com.brain.bsc.manager.ResponsableBscManager;
import com.brain.bsc.view.util.ConstantesBsc;
import com.brain.capa.view.mbean.*;
import com.brain.core.common.UtilCore;
import com.brain.core.dto.ParametroDto;
import com.brain.core.exception.DAOException;
import com.brain.core.view.mbean.*;
import com.brain.core.manager.RecursosManager;
import com.brain.segu.dto.UsuarioDto;
import com.brain.sgc.view.util.ConstantesSgc;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;
import javax.faces.event.ActionEvent;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Hvives
 */
@Controller("balancedScoreCardMBean")
@Scope("session")
public class BalancedScoreCardMBean extends GenericMBean implements Serializable {

    private static Logger logger = Logger.getLogger(CursoMBean.class);
    @Resource
    private RecursosManager recursosManager;
    @Resource
    private BalancedScoreCardManager manager;
    @Resource
    private PrincipalManager principalmanager;
    @Resource
    private DesarrolloBscManager desarrolloBscManager;
    @Resource
    private ResponsableBscManager responsableBscManager;
    
    private List<BalancedScoreCardDto> lista;
    private List<PrincipalDto> listaPrincipal;
    private List<PrincipalDto> listaObjetivoMedianoPlazo;
    private List<ResponsableBscDto> listaResponsable;
    
    private List<ParametroDto> listaEstatus;
    
    private BalancedScoreCardDto dto;
    private ResponsableBscDto responsableBscDto;
    private PrincipalDto principalDto;
    private PrincipalDto largoPlazoDto;
    private DesarrolloBscDto desarrolloBscDto;
    private BalancedScoreCardDto dtoFiltro;
    private String keyTitulo = "balanced.score.card.panel";
    @Autowired
    private ApplicationMBean applicationMBean;
    @Autowired
    private SessionMBean sessionMBean;
    
    private Date fechaActual;
    
    private Long idFinanciera;
    private Long idCliente;
    private Long idProceso;
    private Long idApendizaje;
    
    private Long idFinancieraContribuirEfi_1;
    private Long idFinancieraMaxiValorCola_2;
    private Long idFinancieraIngresosPorColaBo_3;
    
    private Long idClienteOrientadoTalento_1;
    private Long idClienteIdentificarCmac_2;
    private Long idClienteClimaOrg_3;
    private Long idClienteDesarollTalen_4;
    
    private Long idProcesoMonitorearAdmin_1;
    private Long idProcesoIniciativaMejorarclima_2;
    private Long idProcesoEjecut_desem_comp_3;
    private Long idProcesoProgramaCapa_4;
    
    private Long idApendizajeFortCulturaOrg_1;
    private Long idApendizajeProgramaCapa_2;
    
    // LISTAS FINANCIERA
    private List<DesarrolloBscDto> listaFinancieraContriEficien_1;
    private List<DesarrolloBscDto> listaFinancieraMaxColaboradores_2;
    private List<DesarrolloBscDto> listaFinancieraGenerarIngreColabo_3;
    
    // LISTA CLIENTE
    private List<DesarrolloBscDto> listaClienteLiderazOrientaTalent_1;
    private List<DesarrolloBscDto> listaClienteIdentifiCmac_2;
    private List<DesarrolloBscDto> listaClienteClimaOrg_3;
    private List<DesarrolloBscDto> listaClienteDesarroTalent_4;        
    // LISTA PROCESOS
    private List<DesarrolloBscDto> listaProcesosAdminsRrhh_1;  
    private List<DesarrolloBscDto> listaProcesosIniciaMEjoraClima_2; 
    private List<DesarrolloBscDto> listaProcesosEvaluaDesempComp_3; 
    private List<DesarrolloBscDto> listaProcesosProgramCapa_4; 
    // LISTA APRENDIZAJE
    private List<DesarrolloBscDto> listaApendizajeCultuOrg_1;
    private List<DesarrolloBscDto> listaApendizajeProgracpa_2;
    
    
    private DesarrolloBscDto desarrolloBscFinancieraDto;
    
    public BalancedScoreCardMBean() {
        this.dtoFiltro = new BalancedScoreCardDto();
    }

    public String iniciar() {
        this.dto = null;
        this.lista = null;
        this.dtoFiltro = new BalancedScoreCardDto();
        return ConstantesBsc.UrlNavegacion.URL_LISTA_BSC;
    }

    public String nuevo() {
        sessionMBean.setAccion(ConstantesSgc.Formulario.NUEVO);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        this.dto = new BalancedScoreCardDto();
        this.dto.setEstado(Boolean.TRUE);
        this.dto.setAnio(UtilCore.Fecha.obtenerAnioActualString());
        return ConstantesBsc.UrlNavegacion.URL_BSC;
    }

    public String editar() {
        sessionMBean.setAccion(ConstantesSgc.Formulario.EDITAR);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        this.desarrolloBscDto = new DesarrolloBscDto();
        this.desarrolloBscFinancieraDto = new DesarrolloBscDto();
        this.responsableBscDto = new ResponsableBscDto();
        this.obtenerObjetivosLargoPlazoPorBscDto();
        this.obtenerListaDesarollo();
        return ConstantesBsc.UrlNavegacion.URL_BSC;
    }

    public String ver() {
        sessionMBean.setAccion(ConstantesSgc.Formulario.VER);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        this.desarrolloBscDto = new DesarrolloBscDto();
        this.desarrolloBscFinancieraDto = new DesarrolloBscDto();
        this.responsableBscDto = new ResponsableBscDto();
        this.obtenerObjetivosLargoPlazoPorBscDto();
        this.obtenerListaDesarollo();
        return ConstantesBsc.UrlNavegacion.URL_BSC;
    }

    public void buscar(ActionEvent ae) {
        try {
            this.lista = this.manager.obtenerBscFiltro(this.dtoFiltro);
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }

    public String guardar() {
     try{
        BalancedScoreCardDto dtoAuxBsc = this.dto;
        this.manager.guardar(this.dto);
        if (this.dto != null) {
            if (sessionMBean.getAccion() == ConstantesSgc.Formulario.NUEVO){
                for(int i=1; i<=ConstantesBsc.ValoresConstantes.BSC_CANTIDAD_DESARROLLO_PRINCIPAL; i++){
                    if(i == 1){
                        crearPrincipal(ConstantesBsc.ValoresConstantes.BSC_PRINCIPAL_FINANCIERA_TEXTO, (long) i);
                        for(int f=1; f<=ConstantesBsc.ValoresConstantes.BSC_CANTIDAD_MEDIANOPLAZO_FINANCIERA; f++){
                            if(f == 1){
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_FINANCIERA_MEDIANOPLAZO_CONTRIBUIR_EFICIENCIA_TEXTO, (long) f);
                            }else if(f == 2){
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_FINANCIERA_MEDIANOPLAZO_MAXIMIXAR_COLABORADORES_EFICIENCIA_TEXTO, (long) f);
                            }else{
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_FINANCIERA_MEDIANOPLAZO_INGRESOS_COLABORADORES_TEXTO, (long) f);
                            }
                        }
                    }else if(i == 2){
                        crearPrincipal(ConstantesBsc.ValoresConstantes.BSC_PRINCIPAL_CLIENTE_TEXTO, (long) i);
                        for(int c=1; c<=ConstantesBsc.ValoresConstantes.BSC_CANTIDAD_MEDIANOPLAZO_CLIENTE; c++){
                            if(c == 1){
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_CLIENTE_MEDIANOPLAZO_LIDERAZGO_TALENTO_TEXTO, (long) c);
                            }else if(c == 2){
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_CLIENTE_MEDIANOPLAZO_IDENTIFICACION_CMAC_TEXTO, (long) c);
                            }else if(c == 3){
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_CLIENTE_MEDIANOPLAZO_BRINDAR_ORGANIZACIONAL_TEXTO, (long) c);
                            }else {
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_CLIENTE_MEDIANOPLAZO_DESARROLLAR_TALENTO_TEXTO, (long) c);
                            }
                        }
                    }else if(i == 3){
                        crearPrincipal(ConstantesBsc.ValoresConstantes.BSC_PRINCIPAL_PROCESOS_TEXTO, (long) i);
                        for(int p=1; p<=ConstantesBsc.ValoresConstantes.BSC_CANTIDAD_MEDIANOPLAZO_PROCESOS; p++){
                            if(p == 1){
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_PROCESOS_MEDIANOPLAZO_MONITOREAR_ADMINISTRACION_TEXTO, (long) p);
                            }else if(p == 2){
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_PROCESOS_MEDIANOPLAZO_IMPLEMENTAR_INICIATIVAS_TEXTO, (long) p);
                            }else if(p == 3){
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_PROCESOS_MEDIANOPLAZO_EVALUACION_DESEMPENO_COMPETENCIAS_TEXTO, (long) p);
                            }else {
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_PROCESOS_MEDIANOPLAZO_DESARROLLAR_PROGRAMAS_TEXTO, (long) p);
                            }
                        }
                    }else{
                        crearPrincipal(ConstantesBsc.ValoresConstantes.BSC_PRINCIPAL_APRENDIZAJE_TEXTO, (long) i);
                        for(int a=1; a<=ConstantesBsc.ValoresConstantes.BSC_CANTIDAD_MEDIANOPLAZO_APRENDIZAJE; a++){
                            if(a == 1){
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_APRENDIZAJE_MEDIANOPLAZO_FORTALECER_CULTURA_ORGANIZACIONAL_TEXTO, (long) a);
                            }else{
                                crearLargoPlazo(ConstantesBsc.ValoresConstantes.BSC_APRENDIZAJE_MEDIANOPLAZO_DESARROLLAR_PROGRAMAS_CAPACITACION_TEXTO, (long) a);
                            }
                        }
                    }
                }
            }
            this.dto = this.manager.obtenerPorId(this.dto.getId());
            return this.editar();
        }else {
                this.dto = dtoAuxBsc;
            }
      }catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
        return "";
    }
    public void crearPrincipal(String descrip, Long numeracion){   
        this.principalDto= null;
        this.principalDto= new PrincipalDto();
       try {            
            this.principalDto.setDescripcion(descrip);
            this.principalDto.setTipo(ConstantesBsc.ValoresConstantes.BSC_TIPO_PRINCIPAL);
            this.principalDto.setBalancedScoreCard(this.dto.getId());
            this.principalDto.setPadre(null);
            this.principalDto.setNumeracion(numeracion);
            this.principalmanager.nuevo(this.principalDto);
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    public void crearLargoPlazo(String descrip, Long numeracion){   
        this.largoPlazoDto= null;
        this.largoPlazoDto= new PrincipalDto();
       try {            
            this.largoPlazoDto.setDescripcion(descrip);
            this.largoPlazoDto.setTipo(ConstantesBsc.ValoresConstantes.BSC_TIPO_LARGO_PLAZO);
            this.largoPlazoDto.setBalancedScoreCard(this.dto.getId());
            this.largoPlazoDto.setPadre(this.principalDto.getId());
            this.largoPlazoDto.setNumeracion(numeracion);
            this.principalmanager.nuevo(this.largoPlazoDto);
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    public Boolean validarFechaInicioFin(DesarrolloBscDto dto){
        Boolean result=Boolean.FALSE;   
        if(dto.getFechaInicio()!=null && dto.getFechaTermino()!=null){
            if (UtilCore.Fecha.diferenciaDiasFechas(dto.getFechaTermino(), dto.getFechaInicio()) > 0) {
                showWarning(UtilCore.Internacionalizacion.getMensajeInternacional("capacitacion.mensaje.error_fechas"));
            }else{
                result=true;
            }
        }else{
            showWarning(UtilCore.Internacionalizacion.getMensajeInternacional("capacitacion.mensaje.error_fechas"));
        }
        return result;
    }
    public void guadarObjetivoCortoFinanciera(int valor){
        
        try {
            if(this.validarFechaInicioFin(this.desarrolloBscDto)==true){
                if(valor == 1){
                    this.desarrolloBscDto.setPrincipal(this.idFinancieraContribuirEfi_1);
                 }else if(valor == 2){
                    this.desarrolloBscDto.setPrincipal(this.idFinancieraMaxiValorCola_2);
                 }else{
                    this.desarrolloBscDto.setPrincipal(this.idFinancieraIngresosPorColaBo_3); 
                 }
                 this.desarrolloBscDto.setEstadoAvanceDto(new ParametroDto(ConstantesBsc.Parametro.REQ_ESTADO_PROCESO));
                 this.desarrolloBscManager.nuevo(this.desarrolloBscDto);
                 this.obtenerListaFinanciera(valor);
                 this.desarrolloBscDto=new DesarrolloBscDto();
             }
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    
    public void guadarObjetivoCortoCliente(int valor){
        try {
            if(this.validarFechaInicioFin(this.desarrolloBscDto)==true){
                if(valor == 1){
                    this.desarrolloBscDto.setPrincipal(this.idClienteOrientadoTalento_1);
                 }else if(valor == 2){
                    this.desarrolloBscDto.setPrincipal(this.idClienteIdentificarCmac_2);
                 }else if(valor == 3){
                    this.desarrolloBscDto.setPrincipal(this.idClienteClimaOrg_3);
                 }else{
                    this.desarrolloBscDto.setPrincipal(this.idClienteDesarollTalen_4); 
                 }
                 this.desarrolloBscDto.setEstadoAvanceDto(new ParametroDto(ConstantesBsc.Parametro.REQ_ESTADO_PROCESO));
                 this.desarrolloBscManager.nuevo(this.desarrolloBscDto);
                 this.obtenerListaCliente(valor);
                 this.desarrolloBscDto=new DesarrolloBscDto();
            }
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    
    public void guadarObjetivoCortoProceso(int valor){
        try {
            if(this.validarFechaInicioFin(this.desarrolloBscDto)==true){
                if(valor == 1){
                    this.desarrolloBscDto.setPrincipal(this.idProcesoMonitorearAdmin_1);
                 }else if(valor == 2){
                    this.desarrolloBscDto.setPrincipal(this.idProcesoIniciativaMejorarclima_2);
                 }else if(valor == 3){
                    this.desarrolloBscDto.setPrincipal(this.idProcesoEjecut_desem_comp_3);
                 }else{
                    this.desarrolloBscDto.setPrincipal(this.idProcesoProgramaCapa_4); 
                 }
                 this.desarrolloBscDto.setEstadoAvanceDto(new ParametroDto(ConstantesBsc.Parametro.REQ_ESTADO_PROCESO));
                 this.desarrolloBscManager.nuevo(this.desarrolloBscDto);
                 this.obtenerListaProcesos(valor);
                 this.desarrolloBscDto=new DesarrolloBscDto();
            }
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    
    public void guadarObjetivoCortoAprendizaje(int valor){
        try {
            if(this.validarFechaInicioFin(this.desarrolloBscDto)==true){
                if(valor == 1){
                    this.desarrolloBscDto.setPrincipal(this.idApendizajeFortCulturaOrg_1);
                 }else{
                    this.desarrolloBscDto.setPrincipal(this.idApendizajeProgramaCapa_2); 
                 }
                 this.desarrolloBscDto.setEstadoAvanceDto(new ParametroDto(ConstantesBsc.Parametro.REQ_ESTADO_PROCESO));
                 this.desarrolloBscManager.nuevo(this.desarrolloBscDto);
                 this.obtenerListaAprendizaje(valor);
                 this.desarrolloBscDto=new DesarrolloBscDto();
            }    
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    
    public void procesarObjetivoCortoPlazo(int valor){
        try{
            this.desarrolloBscManager.editar(this.desarrolloBscFinancieraDto);
            showMessage(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok"));
            this.obtenerListaFinanciera(valor);
            this.obtenerListaCliente(valor);
            this.obtenerListaProcesos(valor);
            this.obtenerListaAprendizaje(valor);
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
        this.desarrolloBscFinancieraDto=new DesarrolloBscDto();
    }
    
    public void eliminarObjetivoCortoPlazo(int valor) {
        try {
            if(verificarResponsablePorDesarrollo(this.desarrolloBscFinancieraDto)==true){
                if (this.desarrolloBscFinancieraDto.getId() != null) {
                    this.desarrolloBscManager.eliminar(this.desarrolloBscFinancieraDto);
                }
                this.obtenerListaFinanciera(valor);
                this.obtenerListaCliente(valor);
                this.obtenerListaProcesos(valor);
                this.obtenerListaAprendizaje(valor);
                showMessage(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok"));
            }else{
                showMessage(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.balanced.score.card.responsable.desarrollo.error"));
            }
            
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
        this.desarrolloBscFinancieraDto=new DesarrolloBscDto();
    }

    protected void obtenerListaFinanciera(int valor){
        try {
            if(valor == 1){
                this.listaFinancieraContriEficien_1 = this.desarrolloBscManager.obtenerListaFinanciera(this.idFinancieraContribuirEfi_1);
             }else if(valor == 2){
                this.listaFinancieraMaxColaboradores_2 = this.desarrolloBscManager.obtenerListaFinanciera(this.idFinancieraMaxiValorCola_2);
             }else{
                this.listaFinancieraGenerarIngreColabo_3 = this.desarrolloBscManager.obtenerListaFinanciera(this.idFinancieraIngresosPorColaBo_3); 
             }
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    
    }
    protected void obtenerListaCliente(int valor){
        try {
            if(valor == 1){
                this.listaClienteLiderazOrientaTalent_1 = this.desarrolloBscManager.obtenerListaFinanciera(this.idClienteOrientadoTalento_1);
             }else if(valor == 2){
                this.listaClienteIdentifiCmac_2 = this.desarrolloBscManager.obtenerListaFinanciera(this.idClienteIdentificarCmac_2);
             }else if(valor == 3){
                this.listaClienteClimaOrg_3 = this.desarrolloBscManager.obtenerListaFinanciera(this.idClienteClimaOrg_3);             
             }else{
                this.listaClienteDesarroTalent_4 = this.desarrolloBscManager.obtenerListaFinanciera(this.idClienteDesarollTalen_4);
             }
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    
    }
    protected void obtenerListaProcesos(int valor){
        try {
            if(valor == 1){
                this.listaProcesosAdminsRrhh_1 = this.desarrolloBscManager.obtenerListaFinanciera(this.idProcesoMonitorearAdmin_1);
             }else if(valor == 2){
                this.listaProcesosIniciaMEjoraClima_2 = this.desarrolloBscManager.obtenerListaFinanciera(this.idProcesoIniciativaMejorarclima_2);
             }else if(valor == 3){
                this.listaProcesosEvaluaDesempComp_3 = this.desarrolloBscManager.obtenerListaFinanciera(this.idProcesoEjecut_desem_comp_3);             
             }else{
                this.listaProcesosProgramCapa_4 = this.desarrolloBscManager.obtenerListaFinanciera(this.idProcesoProgramaCapa_4);
             }
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    
    }
    protected void obtenerListaAprendizaje(int valor){
        try {
            if(valor == 1){
                this.listaApendizajeCultuOrg_1 = this.desarrolloBscManager.obtenerListaFinanciera(this.idApendizajeFortCulturaOrg_1);
             }else{
                this.listaApendizajeProgracpa_2 = this.desarrolloBscManager.obtenerListaFinanciera(this.idApendizajeProgramaCapa_2);
             }
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    
    }
    protected void obtenerListaDesarollo(){
        try {
            //FINANCIERA
                this.listaFinancieraContriEficien_1 = this.desarrolloBscManager.obtenerListaFinanciera(this.idFinancieraContribuirEfi_1);
                this.listaFinancieraMaxColaboradores_2 = this.desarrolloBscManager.obtenerListaFinanciera(this.idFinancieraMaxiValorCola_2);
                this.listaFinancieraGenerarIngreColabo_3 = this.desarrolloBscManager.obtenerListaFinanciera(this.idFinancieraIngresosPorColaBo_3);
            //CLIENTE  
                this.listaClienteLiderazOrientaTalent_1 = this.desarrolloBscManager.obtenerListaFinanciera(this.idClienteOrientadoTalento_1);
                this.listaClienteIdentifiCmac_2 = this.desarrolloBscManager.obtenerListaFinanciera(this.idClienteIdentificarCmac_2);
                this.listaClienteClimaOrg_3 = this.desarrolloBscManager.obtenerListaFinanciera(this.idClienteClimaOrg_3);
                this.listaClienteDesarroTalent_4 = this.desarrolloBscManager.obtenerListaFinanciera(this.idClienteDesarollTalen_4);
           //PROCESOS  
                this.listaProcesosAdminsRrhh_1 = this.desarrolloBscManager.obtenerListaFinanciera(this.idProcesoMonitorearAdmin_1);
                this.listaProcesosIniciaMEjoraClima_2 = this.desarrolloBscManager.obtenerListaFinanciera(this.idProcesoIniciativaMejorarclima_2);
                this.listaProcesosEvaluaDesempComp_3 = this.desarrolloBscManager.obtenerListaFinanciera(this.idProcesoEjecut_desem_comp_3);
                this.listaProcesosProgramCapa_4 = this.desarrolloBscManager.obtenerListaFinanciera(this.idProcesoProgramaCapa_4);
           //APRENDIZAJE    
                this.listaApendizajeCultuOrg_1 = this.desarrolloBscManager.obtenerListaFinanciera(this.idApendizajeFortCulturaOrg_1);
                this.listaApendizajeProgracpa_2 = this.desarrolloBscManager.obtenerListaFinanciera(this.idApendizajeProgramaCapa_2);
                
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    
    }
    protected void obtenerObjetivosLargoPlazoPorBscDto(){
        try {
             this.listaPrincipal=this.principalmanager.obtenerPrincipal(this.dto);
             for(PrincipalDto prncpl: this.listaPrincipal){
                 if(prncpl.getNumeracion()==1){
                     this.idFinanciera = prncpl.getId();
                 }else if(prncpl.getNumeracion()==2){
                      this.idCliente = prncpl.getId();
                 }else if(prncpl.getNumeracion()==3){
                     this.idProceso = prncpl.getId();
                 }else{
                     this.idApendizaje = prncpl.getId();
                 }      
             }
             System.out.print("financiera ID : "+this.idFinanciera);
             System.out.print("cliente ID : "+this.idCliente);
             System.out.print("proceso ID : "+this.idProceso);
             System.out.print("Apendizaje ID : "+this.idApendizaje);
             //ID OBJETIVOS MEDIANO PLAZO FINANCIERA 
             List<PrincipalDto> listaObjetivoMedianoPlazoFinanciera = new ArrayList<PrincipalDto>();
             listaObjetivoMedianoPlazoFinanciera=this.principalmanager.obtenerObjetivoMedianoPlazo(this.idFinanciera);
             for(PrincipalDto objMediaFinanciera: listaObjetivoMedianoPlazoFinanciera){
                 if(objMediaFinanciera.getNumeracion()==1){
                     this.idFinancieraContribuirEfi_1 = objMediaFinanciera.getId();         
                 }else if(objMediaFinanciera.getNumeracion()==2){
                      this.idFinancieraMaxiValorCola_2 = objMediaFinanciera.getId();     
                 }else{
                     this.idFinancieraIngresosPorColaBo_3 = objMediaFinanciera.getId();
                 } 
             }
             System.out.print("ContribuirEfi_1 for : "+this.idFinancieraContribuirEfi_1);
            //ID OBJETIVOS MEDIANO PLAZO CLIENTE 
            List<PrincipalDto> listaObjetivoMedianoPlazoCliente = new ArrayList<PrincipalDto>();
            listaObjetivoMedianoPlazoCliente=this.principalmanager.obtenerObjetivoMedianoPlazo(this.idCliente);
            for(PrincipalDto objMediaCliente: listaObjetivoMedianoPlazoCliente){
                 if(objMediaCliente.getNumeracion()==1){
                     this.idClienteOrientadoTalento_1 = objMediaCliente.getId();         
                 }else if(objMediaCliente.getNumeracion()==2){
                      this.idClienteIdentificarCmac_2 = objMediaCliente.getId();     
                 }else if(objMediaCliente.getNumeracion()==3){
                      this.idClienteClimaOrg_3 = objMediaCliente.getId();     
                 }else{
                     this.idClienteDesarollTalen_4 = objMediaCliente.getId();
                 } 
             }
 
            //ID OBJETIVOS MEDIANO PLAZO PROCESO 
            List<PrincipalDto> listaObjetivoMedianoPlazoProceso = new ArrayList<PrincipalDto>();
            listaObjetivoMedianoPlazoProceso=this.principalmanager.obtenerObjetivoMedianoPlazo(this.idProceso);
            for(PrincipalDto objMediaProceso: listaObjetivoMedianoPlazoProceso){
                 if(objMediaProceso.getNumeracion()==1){
                     this.idProcesoMonitorearAdmin_1 = objMediaProceso.getId();         
                 }else if(objMediaProceso.getNumeracion()==2){
                      this.idProcesoIniciativaMejorarclima_2 = objMediaProceso.getId();     
                 }else if(objMediaProceso.getNumeracion()==3){
                      this.idProcesoEjecut_desem_comp_3 = objMediaProceso.getId();     
                 }else{
                     this.idProcesoProgramaCapa_4 = objMediaProceso.getId();
                 } 
             }

            //ID OBJETIVOS MEDIANO PLAZO PROCESO 
            List<PrincipalDto> listaObjetivoMedianoPlazoApendizaje = new ArrayList<PrincipalDto>();
            listaObjetivoMedianoPlazoApendizaje=this.principalmanager.obtenerObjetivoMedianoPlazo(this.idApendizaje);
            for(PrincipalDto objMediaApren: listaObjetivoMedianoPlazoApendizaje){
                 if(objMediaApren.getNumeracion()==1){
                     this.idApendizajeFortCulturaOrg_1 = objMediaApren.getId();         
                 }else{
                     this.idApendizajeProgramaCapa_2 = objMediaApren.getId();
                 } 
             }
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    
    public void agregarResponsable() {
        try {
            //verificarResponsable(this.responsableBscDto.getUsuarioDto().getId());
            if(verificarResponsable(this.responsableBscDto.getUsuarioDto().getId())==true){
            this.responsableBscDto.setDesarrolloDto(this.desarrolloBscFinancieraDto);
            this.responsableBscManager.nuevo(this.responsableBscDto);
            }else{
                recursosManager.showWarning(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.balanced.score.card.responsable.error"));
            }
            this.obtenerListaResponsables();
            
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
        }
        this.responsableBscDto = new ResponsableBscDto();
    }

    public void eliminarResponsable(){
        try {
            if (this.responsableBscDto.getId() != null) {
                this.responsableBscManager.eliminar(this.responsableBscDto);
            }
            obtenerListaResponsables();
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
        this.responsableBscDto = new ResponsableBscDto();
    }
    
    private boolean verificarResponsable(Long idRrsp){
        boolean validaRespon = Boolean.TRUE;
        try {
             List<ResponsableBscDto> listRespn = new ArrayList<ResponsableBscDto>();
             listRespn = this.responsableBscManager.verificarUsuraioPorDesarrollo(this.desarrolloBscFinancieraDto,idRrsp);
             if(listRespn.size()>0){validaRespon=false;}
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
        }
        return validaRespon;
    }
    
    public void obtenerListaResponsables(){
        try {
            this.responsableBscDto.setUsuarioDto(new UsuarioDto());
            this.listaResponsable = this.responsableBscManager.obtenerListaResponsablePorDesarrollo(this.desarrolloBscFinancieraDto);
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
        }
    }
    private boolean verificarResponsablePorDesarrollo(DesarrolloBscDto desDto){
        boolean validaResponDesa = Boolean.TRUE;
        try {
             List<ResponsableBscDto> listRespnDesa = new ArrayList<ResponsableBscDto>();
             listRespnDesa= this.responsableBscManager.obtenerListaResponsablePorDesarrollo(desDto);
             if(listRespnDesa.size()>0){validaResponDesa=false;}
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
        }
        return validaResponDesa;
    }

    public String retroceder() {
        buscar(null);
        sessionMBean.setAccion(ConstantesSgc.Formulario.LISTA);
        sessionMBean().setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean().getAccion()));
        return ConstantesBsc.UrlNavegacion.URL_LISTA_BSC;
    }
    public void coloresEstatus() {  
        
        for(DesarrolloBscDto bscList: this.listaFinancieraContriEficien_1){
            if(bscList.getEstadoAvanceDto().getId()==40374L){
                System.out.print("colores estatus verde");
            }else if(bscList.getEstadoAvanceDto().getId()==40375L){
                 System.out.print("colores estatus rojo");
            }else{
                 System.out.print("colores estatus amarillo");
            }
            
        }
    }  

    public static Logger getLogger() {
        return logger;
    }

    public static void setLogger(Logger logger) {
        BalancedScoreCardMBean.logger = logger;
    }

    public RecursosManager getRecursosManager() {
        return recursosManager;
    }

    public void setRecursosManager(RecursosManager recursosManager) {
        this.recursosManager = recursosManager;
    }

    public BalancedScoreCardManager getManager() {
        return manager;
    }

    public void setManager(BalancedScoreCardManager manager) {
        this.manager = manager;
    }

    public List<BalancedScoreCardDto> getLista() {
        return lista;
    }

    public void setLista(List<BalancedScoreCardDto> lista) {
        this.lista = lista;
    }

    public BalancedScoreCardDto getDto() {
        return dto;
    }

    public void setDto(BalancedScoreCardDto dto) {
        this.dto = dto;
    }

    public BalancedScoreCardDto getDtoFiltro() {
        return dtoFiltro;
    }

    public void setDtoFiltro(BalancedScoreCardDto dtoFiltro) {
        this.dtoFiltro = dtoFiltro;
    }

    public String getKeyTitulo() {
        return keyTitulo;
    }

    public void setKeyTitulo(String keyTitulo) {
        this.keyTitulo = keyTitulo;
    }

    public ApplicationMBean getApplicationMBean() {
        return applicationMBean;
    }

    public void setApplicationMBean(ApplicationMBean applicationMBean) {
        this.applicationMBean = applicationMBean;
    }

    public SessionMBean getSessionMBean() {
        return sessionMBean;
    }

    public void setSessionMBean(SessionMBean sessionMBean) {
        this.sessionMBean = sessionMBean;
    }

    public PrincipalDto getPrincipalDto() {
        return principalDto;
    }

    public void setPrincipalDto(PrincipalDto principalDto) {
        this.principalDto = principalDto;
    }

    public PrincipalDto getLargoPlazoDto() {
        return largoPlazoDto;
    }

    public void setLargoPlazoDto(PrincipalDto largoPlazoDto) {
        this.largoPlazoDto = largoPlazoDto;
    }

    public DesarrolloBscDto getDesarrolloBscDto() {
        return desarrolloBscDto;
    }

    public void setDesarrolloBscDto(DesarrolloBscDto desarrolloBscDto) {
        this.desarrolloBscDto = desarrolloBscDto;
    }

    public List<PrincipalDto> getListaPrincipal() {
        return listaPrincipal;
    }

    public void setListaPrincipal(List<PrincipalDto> listaPrincipal) {
        this.listaPrincipal = listaPrincipal;
    }

    public Long getIdFinanciera() {
        return idFinanciera;
    }

    public void setIdFinanciera(Long idFinanciera) {
        this.idFinanciera = idFinanciera;
    }

    public Long getIdCliente() {
        return idCliente;
    }

    public void setIdCliente(Long idCliente) {
        this.idCliente = idCliente;
    }

    public Long getIdProceso() {
        return idProceso;
    }

    public void setIdProceso(Long idProceso) {
        this.idProceso = idProceso;
    }

    public Long getIdApendizaje() {
        return idApendizaje;
    }

    public void setIdApendizaje(Long idApendizaje) {
        this.idApendizaje = idApendizaje;
    }

    public List<PrincipalDto> getListaObjetivoMedianoPlazo() {
        return listaObjetivoMedianoPlazo;
    }

    public void setListaObjetivoMedianoPlazo(List<PrincipalDto> listaObjetivoMedianoPlazo) {
        this.listaObjetivoMedianoPlazo = listaObjetivoMedianoPlazo;
    }

    public Long getIdFinancieraContribuirEfi_1() {
        return idFinancieraContribuirEfi_1;
    }

    public void setIdFinancieraContribuirEfi_1(Long idFinancieraContribuirEfi_1) {
        this.idFinancieraContribuirEfi_1 = idFinancieraContribuirEfi_1;
    }

    public Long getIdFinancieraMaxiValorCola_2() {
        return idFinancieraMaxiValorCola_2;
    }

    public void setIdFinancieraMaxiValorCola_2(Long idFinancieraMaxiValorCola_2) {
        this.idFinancieraMaxiValorCola_2 = idFinancieraMaxiValorCola_2;
    }

    public Long getIdFinancieraIngresosPorColaBo_3() {
        return idFinancieraIngresosPorColaBo_3;
    }

    public void setIdFinancieraIngresosPorColaBo_3(Long idFinancieraIngresosPorColaBo_3) {
        this.idFinancieraIngresosPorColaBo_3 = idFinancieraIngresosPorColaBo_3;
    }

    public Long getIdClienteOrientadoTalento_1() {
        return idClienteOrientadoTalento_1;
    }

    public void setIdClienteOrientadoTalento_1(Long idClienteOrientadoTalento_1) {
        this.idClienteOrientadoTalento_1 = idClienteOrientadoTalento_1;
    }

    public Long getIdClienteIdentificarCmac_2() {
        return idClienteIdentificarCmac_2;
    }

    public void setIdClienteIdentificarCmac_2(Long idClienteIdentificarCmac_2) {
        this.idClienteIdentificarCmac_2 = idClienteIdentificarCmac_2;
    }

    public Long getIdClienteClimaOrg_3() {
        return idClienteClimaOrg_3;
    }

    public void setIdClienteClimaOrg_3(Long idClienteClimaOrg_3) {
        this.idClienteClimaOrg_3 = idClienteClimaOrg_3;
    }

    public Long getIdClienteDesarollTalen_4() {
        return idClienteDesarollTalen_4;
    }

    public void setIdClienteDesarollTalen_4(Long idClienteDesarollTalen_4) {
        this.idClienteDesarollTalen_4 = idClienteDesarollTalen_4;
    }

    public Long getIdProcesoMonitorearAdmin_1() {
        return idProcesoMonitorearAdmin_1;
    }

    public void setIdProcesoMonitorearAdmin_1(Long idProcesoMonitorearAdmin_1) {
        this.idProcesoMonitorearAdmin_1 = idProcesoMonitorearAdmin_1;
    }

    public Long getIdProcesoIniciativaMejorarclima_2() {
        return idProcesoIniciativaMejorarclima_2;
    }

    public void setIdProcesoIniciativaMejorarclima_2(Long idProcesoIniciativaMejorarclima_2) {
        this.idProcesoIniciativaMejorarclima_2 = idProcesoIniciativaMejorarclima_2;
    }

    public Long getIdProcesoEjecut_desem_comp_3() {
        return idProcesoEjecut_desem_comp_3;
    }

    public void setIdProcesoEjecut_desem_comp_3(Long idProcesoEjecut_desem_comp_3) {
        this.idProcesoEjecut_desem_comp_3 = idProcesoEjecut_desem_comp_3;
    }

    public Long getIdProcesoProgramaCapa_4() {
        return idProcesoProgramaCapa_4;
    }

    public void setIdProcesoProgramaCapa_4(Long idProcesoProgramaCapa_4) {
        this.idProcesoProgramaCapa_4 = idProcesoProgramaCapa_4;
    }

    public Long getIdApendizajeFortCulturaOrg_1() {
        return idApendizajeFortCulturaOrg_1;
    }

    public void setIdApendizajeFortCulturaOrg_1(Long idApendizajeFortCulturaOrg_1) {
        this.idApendizajeFortCulturaOrg_1 = idApendizajeFortCulturaOrg_1;
    }

    public Long getIdApendizajeProgramaCapa_2() {
        return idApendizajeProgramaCapa_2;
    }

    public void setIdApendizajeProgramaCapa_2(Long idApendizajeProgramaCapa_2) {
        this.idApendizajeProgramaCapa_2 = idApendizajeProgramaCapa_2;
    }

    public List<DesarrolloBscDto> getListaFinancieraContriEficien_1() {
        return listaFinancieraContriEficien_1;
    }

    public void setListaFinancieraContriEficien_1(List<DesarrolloBscDto> listaFinancieraContriEficien_1) {
        this.listaFinancieraContriEficien_1 = listaFinancieraContriEficien_1;
    }

    public List<DesarrolloBscDto> getListaFinancieraMaxColaboradores_2() {
        return listaFinancieraMaxColaboradores_2;
    }

    public void setListaFinancieraMaxColaboradores_2(List<DesarrolloBscDto> listaFinancieraMaxColaboradores_2) {
        this.listaFinancieraMaxColaboradores_2 = listaFinancieraMaxColaboradores_2;
    }

    public List<DesarrolloBscDto> getListaFinancieraGenerarIngreColabo_3() {
        return listaFinancieraGenerarIngreColabo_3;
    }

    public void setListaFinancieraGenerarIngreColabo_3(List<DesarrolloBscDto> listaFinancieraGenerarIngreColabo_3) {
        this.listaFinancieraGenerarIngreColabo_3 = listaFinancieraGenerarIngreColabo_3;
    }

    public List<ParametroDto> getListaEstatus() {
        return this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(ConstantesBsc.CatalogoParametro.BSC_ESTATUS);
    }

    public void setListaEstatus(List<ParametroDto> listaEstatus) {
        this.listaEstatus = listaEstatus;
    }

    public DesarrolloBscDto getDesarrolloBscFinancieraDto() {
        return desarrolloBscFinancieraDto;
    }

    public void setDesarrolloBscFinancieraDto(DesarrolloBscDto desarrolloBscFinancieraDto) {
        this.desarrolloBscFinancieraDto = desarrolloBscFinancieraDto;
    }

    public List<DesarrolloBscDto> getListaClienteLiderazOrientaTalent_1() {
        return listaClienteLiderazOrientaTalent_1;
    }

    public void setListaClienteLiderazOrientaTalent_1(List<DesarrolloBscDto> listaClienteLiderazOrientaTalent_1) {
        this.listaClienteLiderazOrientaTalent_1 = listaClienteLiderazOrientaTalent_1;
    }

    public List<DesarrolloBscDto> getListaClienteIdentifiCmac_2() {
        return listaClienteIdentifiCmac_2;
    }

    public void setListaClienteIdentifiCmac_2(List<DesarrolloBscDto> listaClienteIdentifiCmac_2) {
        this.listaClienteIdentifiCmac_2 = listaClienteIdentifiCmac_2;
    }

    public List<DesarrolloBscDto> getListaClienteClimaOrg_3() {
        return listaClienteClimaOrg_3;
    }

    public void setListaClienteClimaOrg_3(List<DesarrolloBscDto> listaClienteClimaOrg_3) {
        this.listaClienteClimaOrg_3 = listaClienteClimaOrg_3;
    }

    public List<DesarrolloBscDto> getListaClienteDesarroTalent_4() {
        return listaClienteDesarroTalent_4;
    }

    public void setListaClienteDesarroTalent_4(List<DesarrolloBscDto> listaClienteDesarroTalent_4) {
        this.listaClienteDesarroTalent_4 = listaClienteDesarroTalent_4;
    }

    public List<DesarrolloBscDto> getListaProcesosAdminsRrhh_1() {
        return listaProcesosAdminsRrhh_1;
    }

    public void setListaProcesosAdminsRrhh_1(List<DesarrolloBscDto> listaProcesosAdminsRrhh_1) {
        this.listaProcesosAdminsRrhh_1 = listaProcesosAdminsRrhh_1;
    }

    public List<DesarrolloBscDto> getListaProcesosIniciaMEjoraClima_2() {
        return listaProcesosIniciaMEjoraClima_2;
    }

    public void setListaProcesosIniciaMEjoraClima_2(List<DesarrolloBscDto> listaProcesosIniciaMEjoraClima_2) {
        this.listaProcesosIniciaMEjoraClima_2 = listaProcesosIniciaMEjoraClima_2;
    }

    public List<DesarrolloBscDto> getListaProcesosEvaluaDesempComp_3() {
        return listaProcesosEvaluaDesempComp_3;
    }

    public void setListaProcesosEvaluaDesempComp_3(List<DesarrolloBscDto> listaProcesosEvaluaDesempComp_3) {
        this.listaProcesosEvaluaDesempComp_3 = listaProcesosEvaluaDesempComp_3;
    }

    public List<DesarrolloBscDto> getListaProcesosProgramCapa_4() {
        return listaProcesosProgramCapa_4;
    }

    public void setListaProcesosProgramCapa_4(List<DesarrolloBscDto> listaProcesosProgramCapa_4) {
        this.listaProcesosProgramCapa_4 = listaProcesosProgramCapa_4;
    }

    public List<DesarrolloBscDto> getListaApendizajeCultuOrg_1() {
        return listaApendizajeCultuOrg_1;
    }

    public void setListaApendizajeCultuOrg_1(List<DesarrolloBscDto> listaApendizajeCultuOrg_1) {
        this.listaApendizajeCultuOrg_1 = listaApendizajeCultuOrg_1;
    }

    public List<DesarrolloBscDto> getListaApendizajeProgracpa_2() {
        return listaApendizajeProgracpa_2;
    }

    public void setListaApendizajeProgracpa_2(List<DesarrolloBscDto> listaApendizajeProgracpa_2) {
        this.listaApendizajeProgracpa_2 = listaApendizajeProgracpa_2;
    }

    public ResponsableBscDto getResponsableBscDto() {
        return responsableBscDto;
    }

    public void setResponsableBscDto(ResponsableBscDto responsableBscDto) {
        this.responsableBscDto = responsableBscDto;
    }

    public List<ResponsableBscDto> getListaResponsable() {
        return listaResponsable;
    }

    public void setListaResponsable(List<ResponsableBscDto> listaResponsable) {
        this.listaResponsable = listaResponsable;
    }

    public Date getFechaActual() {
         return UtilCore.Fecha.obtenerFechaActualDate();
    }

    public void setFechaActual(Date fechaActual) {
        this.fechaActual = fechaActual;
    }

}
